/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;
import java.util.List;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.SelectField;
import nextapp.echo2.app.TextField;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.list.DefaultListModel;
import nextapp.echo2.extras.app.AccordionPane;
import nextapp.echo2.extras.app.layout.AccordionPaneLayoutData;
import org.sapra.dao.Universidad;
import org.sapra.echo.Helpers;
import org.sapra.echo.wAviso;
import org.sapra.main.vPrincipal;

/**
 *
 * @author cobain
 */
public class vUniversidad extends nextapp.echo2.app.ContentPane{

    //OBJETOS INICIALES
    Column mParent=null;
    private vPrincipal princ;
    Universidad mUniv;
    public final static int EDITAR = 2;
    public final static int NUEVO = 1;
    public final static int BORRAR = 1;
    public static int accion;
    int sel;
    List<Universidad> univs;

    //COMPONENTES
    private Button bNuevo;
    private Button bEditar;
    private Button bGuardar;
    private Button bCancelar;
    private Button bBorrar;
    private Button bConfirmar;
    private SelectField lista_univ;
    private TextField nom_universidad;
    private Row row4, row5, row6, row7, row8;
    private WindowPane ven;


        public vUniversidad(vPrincipal princ) {
        super();
        this.princ=princ;
        initComponents();
    }

    public vUniversidad(Column parent){
        mParent = parent;
        initComponents();
    }

    private void initComponents(){
            Column col1;


        if(mParent != null) col1 = mParent;
        else{
            col1 = Helpers.Column("Default", new Extent(5),this);
            Row x=princ.getMenu();
            x.setAlignment(Alignment.ALIGN_CENTER);
            col1.add(x);
        }
            //ENCABEZADO.
            Row row1=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("LISTA DE UNIVERSIDADES Y ACCIONES.", new Color(0x011dac), row1);
            row1.setAlignment(Alignment.ALIGN_CENTER);

            Row row2=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE UNA ACCION.", Color.BLACK, row2);
            row2.setAlignment(Alignment.ALIGN_CENTER);

            /*BOTONES DE ACCION.
            Row row3=Helpers.Row("Default", new Extent(10), col1);
            bNuevo=Helpers.Button("NUEVO", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuNuevo(e);}});
            bEditar=Helpers.Button("EDITAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuEditar(e);}});
            bBorrar=Helpers.Button("BORRAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuBorrar(e);}});
            row3.setAlignment(Alignment.ALIGN_CENTER);*/

            //BOTONES DE ACCION
            bNuevo=Helpers.Button2("NUEVO",  new ActionListener(){public void actionPerformed(ActionEvent e) {menuNuevo(e);}});
            bEditar=Helpers.Button2("EDITAR", new ActionListener(){public void actionPerformed(ActionEvent e) {menuEditar(e);}});
            bBorrar=Helpers.Button2("BORRAR", new ActionListener(){public void actionPerformed(ActionEvent e) {menuBorrar(e);}});


          Column col_b=new Column();

           col_b.add(bNuevo);
           col_b.add(bEditar);
           col_b.add(bBorrar);

           col_b.setCellSpacing(new Extent(5));
           col_b.setInsets(new Insets(new Extent(10)));

           AccordionPane ac=new AccordionPane();
           AccordionPaneLayoutData layoutdata=new AccordionPaneLayoutData();
           layoutdata.setTitle("OPCIONES");

           col_b.setLayoutData(layoutdata);
           AccordionPaneLayoutData layoutData2 = new AccordionPaneLayoutData();
           ac.add(col_b);

          ven=Helpers.Window("MENU UNIVERSIDAD");
          ven.setHeight(new Extent(185));
          ven.setWidth(new Extent(185));
          ven.setPositionY(new Extent(60));
          ven.setPositionX(new Extent(60));
          ven.setClosable(false);
          ven.setMovable(false);
          ven.add(ac);
          add(ven);


            //FILA DE DATOS.
            row4=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE UNA UNIVERSIDAD.", Color.BLACK, row4);
            row4.setAlignment(Alignment.ALIGN_CENTER);

            row5=Helpers.Row("Default", new Extent(5), col1);
            lista_univ=Helpers.SelectField(row5, new ActionListener(){public void actionPerformed(ActionEvent e) {Seleccion(e);}});
            lista_univ.setWidth(new Extent(450));
            row5.setAlignment(Alignment.ALIGN_CENTER);

            row6=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("NOMBRE DE UNIVERSIDAD:", Color.BLACK, row6);
            nom_universidad=Helpers.Text("", row6);
            row6.setAlignment(Alignment.ALIGN_CENTER);

            //BOTONES GUARDAR Y CANCELAR
            row7=Helpers.Row("Default", new Extent(5), col1);
            bGuardar=Helpers.Button("GUARDAR", row7, new ActionListener(){public void actionPerformed(ActionEvent e) {menuGuardar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row7, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row7.setAlignment(Alignment.ALIGN_CENTER);

            row8=Helpers.Row("Default", new Extent(5), col1);
            bConfirmar=Helpers.Button("CONFIRMAR BORRAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {confirmarBorrar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row8.setAlignment(Alignment.ALIGN_CENTER);
            FirstTime();

    }

       void FirstTime(){

        UpdateView();

       }

        //ACTUALIZAR LA LISTA
        void UpdateView(){
        List<Universidad> univs= dUniversidad.getUniversidades(0,null);
        lista_univ.setModel(new DefaultListModel(univs.toArray()));
        mUniv= null;
        row4.setVisible(false);
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
        row8.setVisible(false);

       }

        void Seleccion(ActionEvent e){
        mUniv = (Universidad) lista_univ.getSelectedItem();
        if(mUniv == null) return;

       }

       //ACCIONES DE LOS BOTONES.
        void menuNuevo(ActionEvent e){
            row6.setVisible(true);
            row7.setVisible(true);
            accion=NUEVO;

        }

        void menuEditar(ActionEvent e){
        row4.setVisible(true);
        row5.setVisible(true);
        row6.setVisible(true);
        row7.setVisible(true);
        accion=EDITAR;

        }

        void menuGuardar(ActionEvent e){

        String msj=null;
        msj=Validar();
        if(msj!=null){
             add(new wAviso("Error", msj));
             return ;
        }

            if(accion==NUEVO){
            String nombre = nom_universidad.getText();
            dUniversidad.NuevoUniversidad(nombre);
            add(new wAviso("Exito!!!","UNIVERSIDAD AGREGADA CORRECTAMENTE"));
            row6.setVisible(false);
            row7.setVisible(false);
            }

          if(accion==EDITAR){
           mUniv = (Universidad) lista_univ.getSelectedItem();
           if(mUniv==null){
               add(new wAviso("Error", "NO HAY SELECCION"));
           }
          else{
           String nombre=nom_universidad.getText();
           dUniversidad.editarUniversidad(mUniv,nombre);
           add(new wAviso("Exito!!!","UNIVERSIDAD MODIFICADA CORRECTAMENTE"));
          }
        }
        CleanFields();
        UpdateView();
    }

        void menuBorrar(ActionEvent e){
        row5.setVisible(true);
        row8.setVisible(true);
        accion=BORRAR;

        }

        void menuCancelar(ActionEvent e){

            ocultarFilas();

        }

        public void confirmarBorrar(ActionEvent e){
         mUniv = (Universidad) lista_univ.getSelectedItem();
        if(mUniv == null)return;
        if (dUniversidad.borrarUniversidad(mUniv) == 0){
            add(new wAviso("ERROR","NO SE PUEDE BORRAR EL REGISTRO SELECCIONADO"));
        }
        else{
             add(new wAviso("Exito!!!","UNIVERSIDAD BORRADA CORRECTAMENTE"));
        }
         UpdateView();
        }

        //METODOS DE PRESENTACION.
        public void CleanFields(){
            nom_universidad.setText("");
        }

        public void ocultarFilas(){
                        if(accion==NUEVO){
        row6.setVisible(false);
        row7.setVisible(false);
            }
            if(accion==EDITAR){
        row4.setVisible(false);
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
            }
            if(accion==BORRAR){
        row5.setVisible(false);
        row8.setVisible(false);

            }
        }

        private String Validar(){

        String msj1="Formato Erroneo para ";
        String msj3="Favor de Llenar el campo";
        boolean b,c;
        b=isNumeric(nom_universidad.getText());
        if(nom_universidad.getText().trim().equals(""))return msj3+" NOMBRE";
        if(b==true)return msj1+" NOMBRE";
        if(accion==NUEVO){
             List<Universidad> univlist=dUniversidad.getUniversidades(1, nom_universidad.getText().trim());
              if(univlist.size()>0)return " YA EXISTE LA UNIVERSIDAD";
         }

            return null;
        }

        //VALIDAR CADENA DEL CAMPO DE TEXTO
         private  boolean isNumeric(String cadena){
         cadena=nom_universidad.getText();
         try {
              Integer.parseInt(cadena);
              return true;
             }
         catch (NumberFormatException nfe)
         {
           return false;

         }

      }
       /*private boolean validarNombre(String cadena){
             //cadena=nom_universidad.getText();
             List<Universidad> univs2= dUniversidad.getUniversidades();
             for(int i=0;i<univs2.size();i++)
             {
                 if(univs.get(i).toString().equals(cadena));
                 return true;
             }
             return false;
         }*/

}